In network communications, typically a network interface controller (NIC) or other network adapter is present within a system to receive incoming packets from the network. The number of incoming packets can be very large. Thus as the number of cores present in a system continues to increase, technologies such as Receive-Side Scaling (RSS) make it possible to spread network flows among the cores to maintain scalability. Rebalancing the system load can cause network flows to migrate from core to core, which can cause their packets to be processed out of order. Networking protocols such as transmission control protocol (TCP) are designed to handle out-of-order packets correctly, but system performance is reduced as a result. Accordingly, RSS currently uses migration only when processor load is extremely unbalanced.
Some load balancing schemes attempt to prevent packet reordering by only migrating during gaps between bursts. While preserving order is more likely with this technique, a general-purpose operating system (OS) cannot provide a minimum duration of the gap to guarantee that reordering is prevented. Furthermore, while a burst-gap pattern is common in network flows, this behavior is not guaranteed.